package com.example.demo.mapper;

import com.example.demo.model.Active;
import com.example.demo.model.ActiveOlder;
import com.example.demo.model.Comment;
import com.example.demo.model.OlderJoinInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WJ
 * Date: 2023-03-03
 * Time: 16:56
 */
@Mapper
public interface ActiveMapper {

    /**
     * 获取当前管理员下的所有活动信息
     * @return   一个列表
     */
    List<Active> getAllActiveProve(@Param("admin_id") Integer adminId);

    /**
     * 活动通过
     * @param id   活动id
     * @return    被影响的行数
     */
    Integer activeBy(Integer id);

    /**
     * 活动删除
     * @param id  活动id
     * @return   被影响的行数
     */
    Integer activeDelete(Integer id);

    /**
     * 获取所有的活动信息
     * @return  活动信息列表
     */
    List<Active> getAllActive();

    /**
     * 根据活动id获取所有的评论
     * @param id  活动id
     * @return    评论信息
     */
    List<Comment> getAllCommentByActiveId(Integer id);

    /**
     * 添加评论
     * @param comment   该条评论的具体信息
     * @return          被影响的行数
     */
    Integer addComment(Comment comment);

    /**
     * 活动信息修改
     * @param active  活动信息
     * @return        被影响的行数
     */
    Integer updateActiveInfo(Active active);

    /**
     * 获取活动信息通过一些条件来获取
     * @param start_time         起始时间
     * @param end_time           结束时间
     * @param active_name        活动名
     * @param applicant          申请人
     */
    List<Active> getAllActiveInfoByItems(Integer admin_id,
                                         String start_time,
                                         String end_time,
                                         String active_name,
                                         Integer applicant);


    /**
     * 获取活动信息(为活动详情服务:活动管理下的活动详情)
     * @param begin_start_time        开始时间的最小值
     * @param begin_end_time          开始时间的最大值
     * @param finish_start_time       结束时间的最小值
     * @param finish_end_time         结束时间的最大值
     * @param active_name             活动名
     */
    List<Active> getAllActiveInfoForActiveDetail(String begin_start_time,
                                                 String begin_end_time,
                                                 String finish_start_time,
                                                 String finish_end_time,
                                                 String active_name);

    /**
     * 在用户前台获取活动信息(可以根据一些条件来获取)
     * @param id              员工id
     * @param name            活动名
     * @param address         活动地址
     * @param start_time      开始时间
     * @param end_time        结束时间
     */
    List<Active> getActivesByUserItems(Integer id,
                                       String name,
                                       String address,
                                       String start_time,
                                       String end_time);

    /**
     * 申请活动
     * @param active_name      活动名
     * @param active_address   地址
     * @param start_time       开始时间
     * @param end_time         结束时间
     * @param context          内容
     * @param summary          总结
     * @param employee_id      申请员工id
     * @param admin_id         审批管理员id
     * @param p1               第一张图片
     * @param p2               第二张图片
     */
//    Integer addActiveOnEmployee(String active_name,
//                                String active_address,
//                                String start_time,
//                                String end_time,
//                                String context,
//                                String summary,
//                                Integer employee_id,
//                                Integer admin_id,
//                                String p1,
//                                String p2);
    Integer addActiveOnEmployee(String active_name,
                                String active_address,
                                String start_time,
                                String end_time,
                                String context,
                                String summary,
                                Integer employee_id,
                                Integer admin_id,
                                String p1, String p2);


    /**
     * 通过员工id获取活动信息
     * @param id     员工id
     */
    List<Active> getAllActiveInfoByEmployeeId(Integer id);


    /**
     * 查询某个员工手下老人的报名活动信息
     * @param id  员工id
     */
    List<OlderJoinInfo> getAllJoinInfoOnOlder(Integer id);


    /**
     * 更新 older_join_active 表中的审批状态
     * @param id         主键id
     * @param flag       新的状态
     */
    Integer updateOlderJoinActiveInfo(Integer id,
                                      String flag);

    /**
     * 通过id获取 older_id 和 active_id
     * @param id     主键id
     */
    ActiveOlder getOlderIdAndActiveId(Integer id);

    /**
     * 在 active_older 表中插入数据
     * @param older_id      老人id
     * @param active_id     活动id
     * @param flag          报名结果
     */
    Integer addInfoOnActiveOlder(Integer older_id,
                                 Integer active_id,
                                 String flag);

    }
